#include<bits/stdc++.h>
using namespace std;
const int N=401;

int n,m;
int r0,c0,r1,c1;
int visit[N][N];
const int dr[8]={-2,-1,1,2,2,1,-1,-2};
const int dc[8]={1,2,2,1,-1,-2,-2,-1};

int main(){
	memset(visit,-1,sizeof(visit));
	scanf("%d%d",&n,&m);
	scanf("%d%d",&r0,&c0);
	queue<int> que;
	que.push(r0);
	que.push(c0);
	visit[r0][c0]=0;
	int step=1;
	while(!que.empty()){
		int size=que.size()/2;
		for(int i=0;i<size;i++){
			r0=que.front();que.pop();
			c0=que.front();que.pop();
			for(int j=0;j<8;j++){
				r1=r0+dr[j];
				c1=c0+dc[j];
				if(r1>=1&&r1<=n&&c1>=1&&c1<=m&&visit[r1][c1]==-1){
					visit[r1][c1]=step;
					que.push(r1);
					que.push(c1);
				}
			}
		}
		step++;
	}
	for(int r=1;r<=n;r++){
		for(int c=1;c<=m;c++){
			printf("%d ",visit[r][c]);
		}
		printf("\n");
	}
	return 0;
}
